"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/22 9:48
@Description :
class  类名:
     属性  (变量)
     行为  (函数)

类属性&实例属性
类属性
- 定义在类中，方法(函数)外。
- 它属于类本身，而不是某个具体的实例。
- 类成员变量可以通过类名访问，也可以通过实例访问

类属性访问:
- 通过类名访问：MyClass.class_var
- 通过实例访问：obj.class_var，但这种方式实际上会先查找实例属性，如果没有找到，才会查找类属性。
- 通过实例修改类属性，实际上会创建一个同名的实例属性，而不是修改类属性

"""


# 学生类
class Student:
    # 属性属于类 不属于某个具体对象  类中声明的的属性值是一个常量  不能通过对象改变
    stu_no = '2025001'
    stu_name = 'tom'
    stu_age = 18
    stu_gender = '男'


# 创建对象
student = Student()
# 对象中属性的访问  对象名.属性名    1. 先从当前对象中查找有没有该属性 有则从对象中取值  没有则从公共区间 类属性中找
print(student.stu_no)
print(student.stu_name)
print('-------------------------------------------')
student2 = Student()
print(student2.stu_no)
print(student2.stu_name)

print('-------------------改变对象中的属性值------------------------')
# 对象名.属性名 = value
student3 = Student()
student3.stu_no = '2026001'  # 添加一个stu_no属性到当前对象
student3.stu_name = 'admin'
print(student3.stu_no)
print(student3.stu_name)
print('------------------------------')
print(student2.stu_name)
print(student.stu_name)

print('-------------------改变类中的属性值------------------------')
# 通过类访问属性值
print(f'Student.stu_name = {Student.stu_name}')
# 通过类改变属性值
Student.stu_name = 'super'
Student.stu_age = 30

print(student.stu_name)  # super
print(student2.stu_name)  # super
print(student3.stu_name)  # admin

print(student.stu_age)
print(student2.stu_age)
print(student3.stu_age)
